﻿using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Reflection;
using System.Text;
using Ruleweaver.Rules;

namespace Ruleweaver.Rules.CheckMethods
{
	[ContractClass(typeof(ICheckMethodContract))]
	public interface ICheckMethod
	{
		CheckRule GetRule(Type targetType);
	}

	[ContractClassFor(typeof(ICheckMethod))]
	internal abstract class ICheckMethodContract : ICheckMethod
	{
		CheckRule ICheckMethod.GetRule(Type targetType)
		{
			Contract.Requires(targetType != null);
			Contract.Ensures(Contract.Result<CheckRule>() != null);

			return null;
		}
	}
}